package platzerworld.kegeln.mannschaft.vo;

import platzerworld.kegeln.common.KeyValueVO;
import platzerworld.kegeln.common.adapter.EqualsUtil;
import platzerworld.kegeln.common.adapter.HashCodeUtil;

/**
 * Value-Object MannschaftVO
 * 
 * @author platzerg
 */
public class MannschaftVO extends KeyValueVO{
	private static final long serialVersionUID = -7614132829691199845L;

	public long klasseId;
	
	public long vereinId;

	public String name;

	public long mannschaft;

	public MannschaftVO(){
		
	}
	
	public MannschaftVO(long klasseId, long key, String value){
		super(key, value);
		this.klasseId = klasseId;
		this.name = value;
	}
	
	/**
	 * Zeigt an, ob die Mannschaft bereits gespeichert wurde.
	 * 
	 * @return true, wenn die Mannschaft in der Datenbank vorhanden ist.
	 */
	public boolean istNeu() {
		return key == 0;
	}
	
	@Override
	public String toString(){
		return this.name;
	}
	
	  @Override 
	  public boolean equals(Object otherMannschaftVO) {
		    if ( this == otherMannschaftVO ) return true;
		    MannschaftVO that = (MannschaftVO)otherMannschaftVO;

		    return EqualsUtil.areEqual(this.name, that.name);
	  }
	  
	  @Override 
		public int hashCode() {
			 int result = HashCodeUtil.SEED;
			 result = HashCodeUtil.hash( result, name );
			 return result;
		}

		@Override
		public int compareTo(KeyValueVO otherMannschaftVO) {
			final int BEFORE = -1;
		    final int EQUAL = 0;
		    final int AFTER = 1;
		    if ( this == otherMannschaftVO ) return EQUAL;

		    final MannschaftVO compareVO = (MannschaftVO) otherMannschaftVO;
		    
		    int comparison = this.name.compareTo(compareVO.name);
		    if ( comparison != EQUAL ) return comparison;
		    
		    // if (this.key < compareVO.key) return BEFORE;
		    // if (this.key > compareVO.key) return AFTER;

		    return EQUAL;
		}
	  
}
